-- unsigned div

function udiv(n, d)
    if d < 0 then
        if math.ult(n, d) then return 0
        else return 1
        end
    end
    local q = ((n >> 1) // d) << 1
    local r = n - q * d
    -- 纠正商， 可以证明 floor(floor(n/2)/d) * 2 与 floor((n/2)/d)*2 最多相差 1。
    if not math.ult(r, d) then q = q + 1 end
    return q
end

print(udiv(10, 3))